Conventional operating systems (OS) are commonly designed on the assumption that the computer system on which they run is symmetrical. In a Symmetrical Multiprocessor (SMP), such as Sun UE1000, processors have uniform access to memory independent of the processor or the memory address. Similarly, an input/output (I/O) driver running on any processor has uniform access to any I/O device in the system.
Many modern computer systems are not truly symmetrical. A typical example would be a system including central processor unit (CPU) nodes and I/O nodes connected to switches, which in turn connect through a fast network to other switches and nodes. All CPU nodes can access all I/O nodes, so the system is symmetrical to the extent required to run conventional OS. However, a CPU node can access an I/O node which is connected to the same switch as the CPU node more quickly than one connected to another switch. Conventional OS do not provide support for the concept of a CPU automatically accessing the closest appropriate resource (known as “processor affinity”). That is, they do not ensure that software running on a CPU node will always access an I/O node which is connected to the same switch as the CPU node. As a result, accesses from some CPU nodes have to cross a system interconnect to access a remote network interface controller (NIC), whereas an access to a local NIC could be used instead. This results in higher latencies for transmission over the network and unnecessary use of bandwidth on the system interconnect.